//: [Previous](@previous)

/*:
 ### Valid Parentheses
 LeetCode上第20 号问题：有效的括号
 ```
 给定一个只包括 '('，')'，'{'，'}'，'['，']' 的字符串，判断字符串是否有效。
 有效字符串需满足：
 左括号必须用相同类型的右括号闭合。
 左括号必须以正确的顺序闭合。
 注意空字符串可被认为是有效字符串。
 示例 1:
 
 输入: "()"
 输出: true
 示例 2:
 
 输入: "()[]{}"
 输出: true
 示例 3:
 
 输入: "(]"
 输出: false
 示例 4:
 
 输入: "([)]"
 输出: false
 示例 5:
 
 输入: "{[]}"
 输出: true
 ```
 */

var s = "()[]{}"
func Solution(_ s: String) -> Bool {
    
    var stack: [Character] = []
    
    for c in s {
        if c == ")" {
            if !stack.contains("(") {
                return false
            }
            stack.popLast()
        } else if c == "]" {
            if !stack.contains("[") {
                return false
            }
            stack.popLast()
        } else if c == "}" {
            if !stack.contains("{") {
                return false
            }
            stack.popLast()
        } else {
            stack.append(c)
        }
    }
    return stack.isEmpty
}

print(Solution("()"))
print(Solution("()[]{}"))
print(Solution("(]"))
print(Solution("{()}"))


//: [Next](@next)
